Skip to content

字库找字错误码说明 - DictFindStrErrorCodes

概述

以下接口在字库不存在传入文字不在字库中时写入统一错误码,可用 GetLastError() / GetLastErrorString() 读取:

  • 找字:FindStr / FindStrDetail / FindStrAll / FindStrFromPtr / FindStrFromPtrAll
  • 字库识字:OcrFromDict / OcrFromDictDetails / OcrFromDictPtr / OcrFromDictPtrDetails

dict(字库名)和 str(查找文字)都按 | 分段,规则一致,兼容性优先:

  • 字库名:有一段能加载就继续;全部都加载不到才 → 9001
  • 查找文字:有一段能用字库词条拼出就继续找字;全部都拼不出才 → 9002

空名字(dict="")表示使用当前已加载的全部字库;若此时一个字库都没有,同样是 9001

失败时建议同时调用:

  • GetLastError():获取错误码(正整数,如 9002
  • GetLastErrorString():获取中文说明,括号内是缺失的字库名或传入文字(用完后 FreeStringPtr 释放)
cpp
int32_t outX = 0, outY = 0;
int ret = ola.FindStr(0, 0, 0, 0, "你好", "000000", "mydict", 0.9, &outX, &outY);
if (ret < 0) {
    int err = GetLastError(); // 9001 / 9002;屏幕未找到时为 0,ret 为 -1
    char* msg = (char*)GetLastErrorString();
    // 9002 时 msg 类似:字库中找不到指定文字(你好)
    // 若这里中文是乱码,说明入参编码与 SetDefaultEncode 不一致
    FreeStringPtr((int64_t)msg);
}

判断找字是否成功FindStr 请用 ret >= 0-1 只表示屏幕上未找到(至少有一个字库可用,且至少有一段文字能拼出);-9001 / -9002 是字库校验失败。

通用错误(10xx)

返回值GetLastError说明排查建议
-10011001权限不足 / 未登录Login/Reg;FeatureList 须含字库 / Dict 相关特性

字库找字错误(90xx)

返回值GetLastError说明GetLastErrorString 示例排查建议
-90019001全部指定字库都加载不到字库不存在(mydict)字库不存在(dict1|dict2)ImportTxtDict / InitDictFromTxt / InitDictFromDira|b 时只要有一个能加载就会继续;空名字时至少要有一个已加载字库
-90029002全部查找文字都无法用字库拼出字库中找不到指定文字(你好)字库中找不到指定文字(你好|世界)仅当 `
-10屏幕上未找到(仅 FindStr无此次字库错误字库与文字已通过校验,只是当前画面没有匹配

字符串类接口(OcrFromDict*FindStrDetail 等)失败时返回空字符串 / 空结果,不返回负数;请用 GetLastError()9001 / 9002

分段规则(与错误码对应)

入参示例行为
dictdict1|dict2有一个能加载就用已加载的继续;两个都加载不到才 9001,详情列出全部缺失名
dict""(空)使用当前全部已加载字库;一个都没有则 9001,详情为「未指定字库且当前没有任何已加载字库」
str(仅 FindStr 系列)你好|世界有一段能被字库词条覆盖(整词或单字拼接)就继续找字;两段都拼不出才 9002,详情列出全部缺失文字

9002 的详情就是插件内部解码后的 UTF-8 文字。编码正确时应能看到正常中文;编码错误时这里会是乱码,便于对照入参。

相关接口

接口说明
FindStr区域找字,失败返回 -1 / -9001 / -9002
FindStrDetail找字详情 JSON
FindStrAll全部命中
OcrFromDict字库识字
ImportTxtDict导入内存字库
GetLastError读取错误码
GetLastErrorString读取错误说明
文字识别模块总览字库识字与找字选型